package com.easylinkin.linkappapi.elasticsearch.entity;

import com.easylinkin.linkappapi.elasticsearch.constant.EsConstantEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import java.util.List;
import java.util.Map;
import lombok.Data;
import lombok.experimental.Accessors;

/**
 * 设备采集数据Es查询模型
 *
 * @author zhengwen
 **/
@Data
@ApiModel("设备采集数据Es查询模型")
@Accessors(chain = true)
public class EsDeviceCollectModel {

  /**
   * 项目编码（冗余）
   * 原设计是计划从登录用户里面取租户信息，再取projectId，但是罗田大数据的设备流水数据没有projectId
   * 为了兼容，增加支持传projectId，增加开关
   */
  @ApiModelProperty("项目编码")
  private Long projectId;

  /**
   * 使用租户信息，开关
   */
  @ApiModelProperty("使用租户信息")
  private Boolean useTenant;

  /**
   * 设备编号
   */
  @ApiModelProperty("设备编号")
  private String deviceCode;

  /**
   * 查询的起始时间
   */
  @ApiModelProperty("查询的起始时间")
  private Date startTime;

  /**
   * 查询的截止时间
   */
  @ApiModelProperty("查询的截止时间")
  private Date endTime;

  /**
   * 统计类型  0自定义 1本日 2本周 3本月 4本年
   */
  @ApiModelProperty("统计类型  0自定义 1本日 2本周 3本月 4本年")
  private EsConstantEnum.CycleTypeEnum cycleTypeEnum;

  /**
   * 统计类型 0平均值 1数据量 2求和
   */
  @ApiModelProperty("统计类型  0平均值 1数据量 2求和")
  private EsConstantEnum.StatisticsTypeEnum statisticsTypeEnum;

  /**
   * 聚合统计字段list
   */
  @ApiModelProperty("统计字段ListMap,key是字段，value是统计类型")
  private List<Map<String, String>> aggsList;
  /**
   * 分组字段list
   */
  @ApiModelProperty("分组List,有序")
  private List<String> groupsList;


}
